/**
 * 线程：C++11中与thread相关的类和函数都声明在头文件<thread>中
 *  1.C++提供了std::thread
 *      1.构造函数
 *          (1).std::thread(func) 传入普通函数
 *          (2).std::thread(&F::func, f) 传入类函数
 *          (3).std::thread(&F::func, f, param) 传入类函数，并带有参数
 *      2.成员函数
 *          (1).get_id:获取线程ID，返回类型为std::thread:id对象
 *          (2).joinable:判断线程是否可以加入等待
 *          (3).join:等待该线程执行完后才返回
 *          (4).detach:直接销毁线程，容易出异常
 */

#include "Thread.h"

bool Thread::startThread() {
  if (_Running)
    return true;

  try {
    _pThread = new std::thread(&Thread::running, this, this);
  } catch (...) {
    return false;
  }

  _Running = true;
  return true;

}

void Thread::stopThread() {
  _Running = false;
}

bool Thread::isAlive() const {
  return _Running;
}

void Thread::waitFinish() {
  if (_pThread && _pThread->joinable()) {
    _pThread->join();
  }
}
